package uebungsblatt07.aufgabe13b;

import java.util.ArrayList;

public class Politiker
{
	private ArrayList<State> states;

	public Politiker()
	{
		states = new ArrayList<State>();
		states.add(State.POLITISCH_AKTIV);
		states.add(State.LOYAL);
		states.add(State.PROTEGIERT);
		states.add(State.ERGEBEN);
	}

	public boolean aktiv()
	{
		return states.contains(State.POLITISCH_AKTIV) ||
						states.contains(State.AUFSICHTSRAT);
	}

	public void parteilob()
	{
		executeEvent(Events.PARTEILOB);
	}

	public void parteitadel()
	{
		executeEvent(Events.PARTEITADEL);
	}

	public void wirtschaftslob()
	{
		executeEvent(Events.WIRTSCHAFTSLOB);
	}

	public void wirtschaftskritik()
	{
		executeEvent(Events.WIRTSCHAFTSKRITIK);
	}

	public void erwischt()
	{
		executeEvent(Events.ERWISCHT);
	}

	public void addState(State s)
	{
		states.add(s);
	}

	public void removeState(State s)
	{
		states.remove(s);
	}

	public void removeAllStates()
	{
		states.clear();
	}

	public ArrayList<State> getStates()
	{
		return states;
	}

	private void executeEvent(int event)
	{
		ArrayList<State> copy = new ArrayList<State>(states);
		for (int i = 0; i < copy.size(); i++)
			if (event == Events.PARTEILOB)
				copy.get(i).parteilob(this);
			else if (event == Events.PARTEITADEL)
				copy.get(i).parteitadel(this);
			else if (event == Events.WIRTSCHAFTSLOB)
				copy.get(i).wirtschaftslob(this);
			else if (event == Events.ERWISCHT)
				copy.get(i).erwischt(this);
	}


}
